<%@page import="go.GO"%>
<%@page import="go.TreeGO"%>
<%@page import="archivos.BorrarDirectorio"%>
<%@page import="archivos.Txt"%>
<%@page import="analisis.GoGanpa"%>
<%@page import="archivos.Sif"%>
<%@page import="graphs.GraphADT"%>
<%@page import="utils.OS"%>
<%@page import="org.apache.commons.fileupload.FileUploadException"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="java.io.File"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <%@include file="../disenoWeb/title.html" %>
        <meta charset="utf-8">
        <%@include file="../disenoWeb/head.html" %>

        <script src="../disenoWeb/js/formulario.js" type="text/javascript"></script>


    </head>
    <body id="page2" >
        <div class="extra">
            <!--==============================header=================================-->
            <header>
                <%@include file="../disenoWeb/divHeader.jsp" %>
                <div class="menu-row">
                    <div class="menu-bg">
                        <div class="main">
                            <nav class="indent-left">
                                <ul class="menu wrapper">
                                    <%@include file="menuGoganpa.html" %>
                                </ul>
                            </nav>
                        </div>
                    </div>
                </div>
                <div class="row-bot">
                    <div class="center-shadow">
                    </div>
                </div>
            </header>

            <!--==============================content================================-->
            <section id="content">
                <div class="content-bg">
                    <div class="main">
                        <%                            /*Se inicializan varias variables*/
                            String separator = OS.getDirectorySeparator();
                            String sesion = session.getId();//Identificador de session  
                            session.setAttribute("sesion", sesion);

                            //----------------------------------------------------------
                            /*Se crea una nueva carpeta dedicada a este apartado, llamda "enrichNet". Dentro de esta carpeta
                             se crearan carpetas por usuario mediante el identificador de session*/
                            String goganpa = application.getRealPath(separator
                                    + "WEB-INF" + separator + "datos" + separator + "go");

                            File directorio = new File(goganpa);

                            String ubicacionWebInf = application.getRealPath(separator
                                    + "WEB-INF" + separator + "datos");


                            /*Si no existe la carpeta "Enrich" se crea*/
                            if (!directorio.exists()) {
                                directorio.mkdir();
                            }

                            //----------------------------------------------------------
                            /*Se crea una carpeta mediante el identificador de session*/
                            String ubicacionUsuario = goganpa + separator + sesion;
                            File directorioUsuario = new File(ubicacionUsuario);

                            /*Si no existe la carpeta "Enrich" se crea*/
                            if (!directorioUsuario.exists()) {
                                directorioUsuario.mkdir();
                            }

                            String org = (String) session.getAttribute("carpetag"); //Organismo Elegido para Goganpa
                            String ont = (String) request.getParameter("ont"); //Ontologia para Goganpa
                            String measure = (String) request.getParameter("medidas_goganpa");//Medida para Goganpa
                            String combine = (String) request.getParameter("combine_goganpa");//Combine para Goganpa
                            String rho = (String) request.getParameter("umbral");//Umbral para Goganpa
                            String termino = (String) request.getParameter("term");//Umbral para Goganpa
                            session.setAttribute("termino", termino);
                            session.setAttribute("ont", ont);

                            /*Si el termino esta vacio, quiere decir que se ha elegido que se realice 
                             la red con todos los terminos de una ontologia*/
                            if (termino.equals("")) {
                                GO go = new GO(ubicacionWebInf, sesion, org);
                                //Se crea el fichero con todos los genes una ontologia
                                go.ScriptGO_Genes_Ontology(ont);
                                File fgenes = new File(ubicacionUsuario + separator + "genes" + ont + ".txt");
                                File orgGO = new File(ubicacionWebInf + separator + "orgGO.txt");
                                //Se obtienen todos los genes de una ontologia
                                List<String> genes = Txt.goGenes(fgenes);
                                String organismo = Txt.orgGoganpa(org, orgGO);
                                GoGanpa.generarScript(genes, ont, measure, organismo, combine, rho, ubicacionUsuario, termino);

                        %>


                        <jsp:forward page="netGoganpa.jsp"/>

                        <%                        } else {
                            if (termino.startsWith("GO:") && termino.length() == 10) {

                                GO go = new GO(ubicacionWebInf, sesion, org);
                                //Se obtienen las relaciones termino-hijos de una ontologia
                                go.ScriptGO_Ontologys(ont);
                                //Se crea el fichero con todos los genes una ontologia
                                go.ScriptGO_Genes_Ontology(ont);
                                //Se obtiene el arbol de terminos
                                go.getArbolGO().addTerminos(ont,termino);

                                if (go.getArbolGO().existeTermino(termino, ont) != -1) {

                                   

                                    List<String> genes = go.getArbolGO().getGenes();
                                    String organismo = go.getArbolGO().getOrg();

                                    //Se hace una llamda al metodo que crea el script de R y lo ejecuta
                                    GoGanpa.generarScript(genes, ont, measure, organismo, combine, rho, ubicacionUsuario, termino);

                        %>


                        <jsp:forward page="netGoganpa.jsp"/>

                        <%} else {

                            String errorTermino = "Si";
                            session.setAttribute("errorTermino", errorTermino);
                            BorrarDirectorio.borrarDirectorio(directorioUsuario);
                            directorioUsuario.delete();
                        %><form action="formGoganpa.jsp" id="error" ></form>
                        <script>submitFormulario();</script>  <%
                            }
                        } else {

                            String errorTermino = "Si";
                            session.setAttribute("errorTermino", errorTermino);
                            BorrarDirectorio.borrarDirectorio(directorioUsuario);
                            directorioUsuario.delete();
                        %><form action="formGoganpa.jsp" id="error" ></form>
                        <script>submitFormulario();</script>  <%
                                }
                            }
                        %>

                    </div>
                    <div class="block"></div>
                </div>
            </section>
        </div>

        <!--==============================footer=================================-->
        <footer>
            <%@include file="../disenoWeb/footer.html" %>
        </footer>
        <script type="text/javascript"> Cufon.now();</script>
    </body>
</html>
